package org.dromara.admin.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * 作废枚举：正常（Y）、作废（N）
 */
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT) // ✅ 序列化为对象形式（code + info）
public enum IsCancelEnum {

    /**
     * 未作废
     */
    Y("Y", "正常"),

    /**
     * 作废
     */
    N("N", "作废");

    @EnumValue // ✅ MyBatis Plus 存储时用 code
    @JsonValue // ✅ 返回给前端时显示 code
    private final String code;
    private final String info;

    IsCancelEnum(String code, String info) {
        this.code = code;
        this.info = info;
    }

    @JsonCreator
    public static IsCancelEnum fromCode(String code) {
        if (code == null) return null;
        for (IsCancelEnum e : values()) {
            if (e.code.equalsIgnoreCase(code)) {
                return e;
            }
        }
        return null; // ✅ 不匹配时返回 null
    }

    @JsonValue
    public Map<String, String> toJson() {
        Map<String, String> map = new HashMap<>();
        map.put("code", this.code);
        map.put("info", this.info);
        return map;
    }
}
